{
 "cells": [
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:49.974594Z",
     "start_time": "2025-01-17T12:25:49.968695Z"
    }
   },
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "import os\n",
    "import sys\n",
    "import time\n",
    "from tqdm.auto import tqdm\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "\n",
    "print(sys.version_info)\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "\n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "print(device)\n"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.10.0\n",
      "numpy 1.26.4\n",
      "pandas 2.2.3\n",
      "sklearn 1.6.0\n",
      "torch 2.5.1+cpu\n",
      "cpu\n"
     ]
    }
   ],
   "execution_count": 19
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 准备数据\n",
    "对非数据集数据进行处理，将其转换为张量。\n"
   ],
   "id": "b2ca68305d4f1003"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.068879Z",
     "start_time": "2025-01-17T12:25:50.054618Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.datasets import fetch_california_housing\n",
    "\n",
    "housing = fetch_california_housing(data_home=\"./data\")\n",
    "\n",
    "print(type(housing))  # <class'sklearn.utils.Bunch'>\n",
    "print(\"-\" * 50)\n",
    "\n",
    "print(housing.data.shape)  # (20640, 8)\n",
    "print(\"-\" * 50)\n",
    "print(type(housing.data))  # <class 'numpy.ndarray'>\n",
    "print(\"-\" * 50)\n",
    "\n",
    "print(housing.target.shape)  # (20640,)\n",
    "print(\"-\" * 50)\n",
    "print(type(housing.target))  # <class 'numpy.ndarray'>"
   ],
   "id": "179320fc991c0d9e",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'sklearn.utils._bunch.Bunch'>\n",
      "--------------------------------------------------\n",
      "(20640, 8)\n",
      "--------------------------------------------------\n",
      "<class 'numpy.ndarray'>\n",
      "--------------------------------------------------\n",
      "(20640,)\n",
      "--------------------------------------------------\n",
      "<class 'numpy.ndarray'>\n"
     ]
    }
   ],
   "execution_count": 20
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.092782Z",
     "start_time": "2025-01-17T12:25:50.077885Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "# 将数据集分为训练集和测试集\n",
    "x_train_all, x_test, y_train_all, y_test = train_test_split(\n",
    "    housing.data, housing.target, random_state=7, test_size=0.25)\n",
    "\n",
    "# 将训练集分为训练集和验证集\n",
    "x_train, x_valid, y_train, y_valid = train_test_split(\n",
    "    x_train_all, y_train_all, random_state=11)\n",
    "\n",
    "# 训练集\n",
    "print(x_train.shape, y_train.shape)\n",
    "\n",
    "# 验证集\n",
    "print(x_valid.shape, y_valid.shape)\n",
    "\n",
    "# 测试集\n",
    "print(x_test.shape, y_test.shape)\n",
    "\n",
    "# 把3个数据集都放到字典中\n",
    "dataset_maps = {\n",
    "    \"train\": (x_train, y_train),  # 训练集\n",
    "    \"valid\": (x_valid, y_valid),  # 验证集\n",
    "    \"test\": (x_test, y_test)  # 测试集\n",
    "}\n"
   ],
   "id": "6438d1e42b76dee3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(11610, 8) (11610,)\n",
      "(3870, 8) (3870,)\n",
      "(5160, 8) (5160,)\n"
     ]
    }
   ],
   "execution_count": 21
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.112279Z",
     "start_time": "2025-01-17T12:25:50.103790Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "scaler = StandardScaler()  #标准化\n",
    "\n",
    "# fit和fit_transform的区别，\n",
    "# fit是计算均值和方差，fit_transform是先fit，然后transform\n",
    "scaler.fit(x_train)"
   ],
   "id": "31716505cd2977d0",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "StandardScaler()"
      ],
      "text/html": [
       "<style>#sk-container-id-2 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-2 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-2 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-2 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-2 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-2 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-2 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-2 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-2 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-2 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-2 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>StandardScaler()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>StandardScaler</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.preprocessing.StandardScaler.html\">?<span>Documentation for StandardScaler</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>StandardScaler()</pre></div> </div></div></div></div>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 22
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 构建数据集",
   "id": "16087ce2514248b7"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.140582Z",
     "start_time": "2025-01-17T12:25:50.132287Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#构建私有数据集，就需要用如下方式\n",
    "from torch.utils.data import Dataset\n",
    "\n",
    "\n",
    "# 因为最终目的是为了将数据分批，所以要继承自Dataset\n",
    "class HousingDataset(Dataset):\n",
    "    def __init__(self, dataset_maps, mode=\"train\"):\n",
    "        # x,y都是ndarray类型\n",
    "        self.x, self.y = dataset_maps[mode]\n",
    "        # from_numpy将NumPy数组转换成PyTorch张量\n",
    "        self.x = torch.from_numpy(scaler.transform(self.x)).float()\n",
    "        # 处理为多行1列的tensor类型,因为__getitem__切片时需要\n",
    "        self.y = torch.from_numpy(self.y.reshape(-1, 1)).float()\n",
    "        # 处理为多行1列的tensor类型,因为__getitem__切片时需要\n",
    "\n",
    "    def __len__(self):  # 必须写\n",
    "        return len(self.x)  # 返回数据集的长度，0维的size\n",
    "\n",
    "    def __getitem__(self, index):  # 必须写\n",
    "        # idx是索引，返回的是数据和标签，这里是一个样本\n",
    "        return self.x[index], self.y[index]\n",
    "        # 返回第index个数据，0维的index\n",
    "\n",
    "\n",
    "#train_ds是dataset类型的数据，与前面例子的FashionMNIST类型一致\n",
    "train_ds = HousingDataset(dataset_maps, mode=\"train\")\n",
    "valid_ds = HousingDataset(dataset_maps, mode=\"valid\")\n",
    "test_ds = HousingDataset(dataset_maps, mode=\"test\")"
   ],
   "id": "6983b17b0a43ddbf",
   "outputs": [],
   "execution_count": 23
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.174476Z",
     "start_time": "2025-01-17T12:25:50.167589Z"
    }
   },
   "cell_type": "code",
   "source": "train_ds[0]  # 第一个样本的x和y，都是张量",
   "id": "32eb5ab0d2d15cec",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor([ 0.8015,  0.2722, -0.1162, -0.2023, -0.5431, -0.0210, -0.5898, -0.0824]),\n",
       " tensor([3.2260]))"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 24
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.193558Z",
     "start_time": "2025-01-17T12:25:50.186481Z"
    }
   },
   "cell_type": "code",
   "source": "train_ds[0][0]",
   "id": "5b70d99fe2daee9e",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([ 0.8015,  0.2722, -0.1162, -0.2023, -0.5431, -0.0210, -0.5898, -0.0824])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 25
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.216266Z",
     "start_time": "2025-01-17T12:25:50.210566Z"
    }
   },
   "cell_type": "code",
   "source": "train_ds[0][1]",
   "id": "2cac8b93a241b2cc",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([3.2260])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 26
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## DataLoader",
   "id": "ac48caac2c0b7d1b"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.237996Z",
     "start_time": "2025-01-17T12:25:50.233270Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torch.utils.data import DataLoader\n",
    "\n",
    "#放到DataLoader中的train_ds, valid_ds, test_ds都是dataset类型的数据\n",
    "batch_size = 256  #batch_size是可以调的超参数\n",
    "train_loader = DataLoader(train_ds, batch_size=batch_size, shuffle=True)\n",
    "val_loader = DataLoader(valid_ds, batch_size=batch_size, shuffle=False)\n",
    "test_loader = DataLoader(test_ds, batch_size=batch_size, shuffle=False)"
   ],
   "id": "e4913bc7597b3d04",
   "outputs": [],
   "execution_count": 27
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 定义模型",
   "id": "d35e08caf2939a19"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.257258Z",
     "start_time": "2025-01-17T12:25:50.253001Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#回归模型我们只需要1个数\n",
    "\n",
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self, input_dim=8):\n",
    "        super().__init__()\n",
    "        self.linear_relu_stack = nn.Sequential(\n",
    "            nn.Linear(input_dim, 30),\n",
    "            nn.ReLU(),\n",
    "            nn.Linear(30, 1)\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        # 因为输入的就已经是一维的张量，所以不需要展平\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        return logits\n"
   ],
   "id": "95800ab9c21dfe0e",
   "outputs": [],
   "execution_count": 28
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.287334Z",
     "start_time": "2025-01-17T12:25:50.282266Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 早停\n",
    "class EarlyStopCallback:\n",
    "    def __init__(self, patience=5, min_delta=0.01):\n",
    "        self.patience = patience  # 多少个step没有提升就停止训练\n",
    "        self.min_delta = min_delta  # 最小的提升幅度\n",
    "        self.best_metric = -1  # 记录的最好的指标\n",
    "        self.counter = 0  # 计数器，记录连续多少个step没有提升\n",
    "\n",
    "    def __call__(self, metric):\n",
    "        if metric >= self.best_metric + self.min_delta:  # 如果指标提升了\n",
    "            self.best_metric = metric  # 更新最好的指标\n",
    "            self.counter = 0  # 计数器清零\n",
    "        else:\n",
    "            self.counter += 1  # 计数器加一\n",
    "\n",
    "    @property  # 使用@property装饰器，使得 对象.early_stop可以调用，不需要()\n",
    "    def early_stop(self):\n",
    "        # 如果计数器大于等于patience，则返回True，停止训练\n",
    "        return self.counter >= self.patience"
   ],
   "id": "dafde4c7bc482222",
   "outputs": [],
   "execution_count": 29
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.300602Z",
     "start_time": "2025-01-17T12:25:50.296339Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "\n",
    "# 评估函数\n",
    "# 因为是回归问题，所以计算准确率无意义\n",
    "@torch.no_grad()  # 装饰器，禁止梯度计算\n",
    "def evaluate(model, data_loader, loss_fct):\n",
    "    loss_list = []\n",
    "    for datas, labels in data_loader:\n",
    "        datas = datas.to(device)\n",
    "        labels = labels.to(device)\n",
    "\n",
    "        # 前向传播\n",
    "        logits = model(datas)\n",
    "        loss = loss_fct(logits, labels)  # 验证集损失\n",
    "        # tensor.item() 获取tensor的数值，loss是只有一个元素的tensor\n",
    "        loss_list.append(loss.item())\n",
    "\n",
    "    return np.mean(loss_list)  # # 返回验证集平均损失和准确率"
   ],
   "id": "fee145430e7ea5df",
   "outputs": [],
   "execution_count": 30
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.309278Z",
     "start_time": "2025-01-17T12:25:50.302607Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 训练函数\n",
    "def training(model,\n",
    "             train_loader,\n",
    "             val_loader,\n",
    "             epoch,\n",
    "             loss_fct,\n",
    "             optimizer,\n",
    "             early_stop_callback=None,\n",
    "             eval_step=500,\n",
    "             ):\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "\n",
    "    global_step = 0  # 全局步数\n",
    "    model.train()  # 训练模式\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:\n",
    "        for epoch_id in range(epoch):\n",
    "            for datas, labels in train_loader:\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "\n",
    "                # 前向传播\n",
    "                logits = model(datas)\n",
    "                loss = loss_fct(logits, labels)  # 训练集损失\n",
    "\n",
    "                # 反向传播\n",
    "                optimizer.zero_grad()  # 梯度清零\n",
    "                loss.backward()  # 反向传播\n",
    "                optimizer.step()  # 优化器更新参数\n",
    "\n",
    "                loss = loss.cpu().item()\n",
    "\n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss,\n",
    "                    \"step\": global_step\n",
    "                })\n",
    "\n",
    "                # 评估\n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()  # 评估模式\n",
    "                    # 验证集损失和准确率\n",
    "                    val_loss = evaluate(model, val_loader, loss_fct)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss,\n",
    "                        \"step\": global_step\n",
    "                    })\n",
    "                    model.train()  # 训练模式\n",
    "\n",
    "                    # 早停 early stopping\n",
    "                    if early_stop_callback is not None:\n",
    "                        # 验证集准确率不再提升，则停止训练\n",
    "                        early_stop_callback(-val_loss)\n",
    "                        # 验证集准确率不再提升，则停止训练\n",
    "                        if early_stop_callback.early_stop:\n",
    "                            print(f\"Early stop at epoch {epoch_id} / global_step {global_step}\")\n",
    "                            return record_dict  # 早停，返回记录字典 record_dict\n",
    "\n",
    "                # 更新进度条和全局步数\n",
    "                pbar.update(1)  # 更新进度条\n",
    "                global_step += 1  # 全局步数加一\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})\n",
    "\n",
    "    return record_dict  # 训练结束，返回记录字典 record_dict\n"
   ],
   "id": "3d36c3eaec6fc763",
   "outputs": [],
   "execution_count": 31
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:50.316905Z",
     "start_time": "2025-01-17T12:25:50.312282Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=5):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "\n",
    "    # plot\n",
    "    for idx, item in enumerate(train_df.columns):\n",
    "        plt.plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        plt.plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        plt.grid()\n",
    "        plt.legend()\n",
    "        # plt.xticks(range(0, train_df.index[-1], 10*sample_step), range(0, train_df.index[-1], 10*sample_step))\n",
    "        plt.xlabel(\"step\")\n",
    "\n",
    "        plt.show()\n",
    "\n"
   ],
   "id": "2aa85a23e2c75600",
   "outputs": [],
   "execution_count": 32
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 网络搜索，for循环实现",
   "id": "497c8e6daf47f3fb"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:26:37.538306Z",
     "start_time": "2025-01-17T12:25:50.321907Z"
    }
   },
   "cell_type": "code",
   "source": [
    "for lr in [1e-2, 3e-2, 3e-1, 1e-3]:\n",
    "    epoch = 100\n",
    "\n",
    "    model = NeuralNetwork()\n",
    "\n",
    "    # 1. 定义损失函数 采用MSE损失,均方误差\n",
    "    loss_fct = nn.MSELoss()  # 损失函数\n",
    "    # 2. 定义优化器 采用SGD优化器\n",
    "    optimizer = torch.optim.SGD(model.parameters(), lr=lr, momentum=0.9)\n",
    "\n",
    "    # 3. 定义早停\n",
    "    early_stop_callback = EarlyStopCallback(patience=10, min_delta=0.001)\n",
    "\n",
    "    model = model.to(device)\n",
    "    record_dict = training(\n",
    "        model,\n",
    "        train_loader,\n",
    "        val_loader,\n",
    "        epoch,\n",
    "        loss_fct,\n",
    "        optimizer,\n",
    "        early_stop_callback=early_stop_callback,\n",
    "        eval_step=len(train_loader)\n",
    "        )\n",
    "    \n",
    "    # 画图\n",
    "    print(\"lr: {}\".format(lr))\n",
    "    plot_learning_curves(record_dict)\n",
    "    model.eval()\n",
    "    loss = evaluate(model, val_loader, loss_fct)\n",
    "    print(f\"loss:     {loss:.4f}\")"
   ],
   "id": "6fb98b8ab19337eb",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "ce50cfc02bb8410e96827536c6be77d2"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 69 / global_step 3174\n",
      "lr: 0.01\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3192\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "9d9a0ea3cf614bb9b498dca99c20364c"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 59 / global_step 2714\n",
      "lr: 0.03\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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n4z92Lx5c4PgIW655ZbIz4MHD0Zubi7GjBmDnTt3olevXk3uJy4uTp0akycoWk9SNO/7ZLW17WnPbdlesS31w7bUD9tSPx29LR2teGwnNdV2xowZeP/997Fs2TJ07dr1uLc977zzIl00RERERK2qfEgPzR133IH58+dj+fLl6NGjxwn/z4YNG9S5VECIiIiI7K3tapGBoO+++65a66OwsFBdnpaWhoSEBNW1ItdPmjQJnTt3VmM+7rrrLjUTZsiQIdF6DERERNRRw8fzzz8fmdFS38svv4xp06bB6XTik08+wTPPPKPW/pCBo1dccQV+97vf6bvVREREZJ5ul+ORsCELkREREREdC4/t0gacwlIrRERE7Q7DBxERERmK4aMNkIPvERERmQXDRxvAbhciIjIThg8iIiIyFMNHG8BuFyIiMhOGjzaA3S5ERGQmDB9ERERkKIaPNoDdLkREZCYMH20Au12IiMhMGD6IiIjIUAwfREREZCiGDyIiIjIUwwcREREZiuGDiIiIDMXwQURERIZi+CAiIiJDMXwQERGRoRg+iIiIyFAMH0RERGQoho82gIurExGRmTB8EBERkaEYPtoAHtOWiIjMhOGjDWC3CxERmQnDBxERERmK4YOIiIgMxfBBREREhmL4ICIiIkMxfBAREZGhGD6IiIjIUAwfREREZCiGDyIiIjIUwwcREREZiuGDiIiIDMXwQURERIZi+CAiIiJDMXwQERGRoRg+iIiIyFAMH0RERGQoho82QNNivQVERERtNHzMmjUL55xzDlJSUpCVlYWpU6di27ZtDW5TW1uL6dOno3PnzkhOTsYVV1yBw4cP673dREREZIbw8emnn6pgsXr1aixevBg+nw/jx49HdXV15DZ33XUX3nvvPbz99tvq9ocOHcLll18ejW3vMCyWWG8BERGRceytufFHH33U4Pc5c+aoCsj69esxatQoVFRU4J///Cfmzp2LSy65RN3m5ZdfRv/+/VVgOf/88/Xd+g6C3S5ERGQmrQofjUnYEBkZGepcQohUQ8aOHRu5Tb9+/dCtWzesWrWq2fDh8XjUKczlcqlzuR856Sl8f3rfrx7a4ja117Zsb9iW+mFb6odtqR+ztKWvFY/vpMNHMBjEnXfeiZEjR2LQoEHqssLCQjidTqSnpze4bXZ2trruWONIZs6c2eTyRYsWITExEdEg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6odtqR+2pX46els6WvHYdF9eXdYNGD58OJYsWRK5LBgMqt9HjBih958jIiKidiYq3S7SjSIDTM8++2y1todMta2ursaNN94YjT9HREREZg8fV111FYqLi/Hggw+qRcbOPPNMfPTRR00GoRIREZH5RG3A6YwZM9SJiIiIKKpjPoiIiIiOh+GDiIiIDMXwQURERIZi+CAiIiJDMXwQERGRoRg+iIiIyFAMH0RERGSomB9YrjFN01p9gJrWHNxHjron992R19c3AttSP2xL/bAt9cO21I9Z2tJVt98O78fbVfiorKxU53JkWyIiImpfZD+elpZ23NtYtJZEFAPJQegOHTqElJQUWCwW3VOZhJr9+/cjNTVV1/s2G7alftiW+mFb6odtqR+ztKWmaSp45OXlwWq1tq/Kh2xw165do/o35MnvyC8AI7Et9cO21A/bUj9sS/2YoS3TTlDxCOOAUyIiIjIUwwcREREZylThIy4uDg899JA6p1PDttQP21I/bEv9sC31w7ZsBwNOiYiIqGMzVeWDiIiIYo/hg4iIiAzF8EFERESGYvggIiIiQ5kmfMyePRunn3464uPjcd5552Ht2rWx3qQ25+GHH1arytY/9evXL3J9bW0tpk+fjs6dOyM5ORlXXHEFDh8+3OA+9u3bhx/+8IdITExEVlYW7rnnHvj9fnR0K1aswOTJk9XKftJuCxYsaHC9jOt+8MEHkZubi4SEBIwdOxbbt29vcJsjR47guuuuU4sQpaen46abbkJVVVWD22zcuBE/+MEP1OtYVkx88sknYba2nDZtWpPX6aWXXtrgNmzLkFmzZuGcc85RK0bL+3Hq1KnYtm1bg9vo9b5evnw5hg0bpmZ09O7dG3PmzIHZ2nL06NFNXpu33nprg9uwLetoJvDGG29oTqdTe+mll7QtW7ZoN998s5aenq4dPnw41pvWpjz00EPawIEDtYKCgsipuLg4cv2tt96q5efna0uWLNHWrVunnX/++doFF1wQud7v92uDBg3Sxo4dq3399dfawoULtczMTO3+++/XOjp5rL/97W+1efPmyewxbf78+Q2u//3vf6+lpaVpCxYs0L755hvtxz/+sdajRw+tpqYmcptLL71UGzp0qLZ69Wrts88+03r37q1dc801kesrKiq07Oxs7brrrtM2b96svf7661pCQoL2t7/9TTNTW95w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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3186\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "c8ef19b24f3d47b995b45bb953e2ac06"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Early stop at epoch 9 / global_step 414\n",
      "lr: 0.3\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     nan\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/4600 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "362312af7a234ae5b01b66ba18025841"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lr: 0.001\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ],
      "image/png": "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3LmztnLlSm3p0qVaixYttNGjR3suT01N1erWrauNGTNG27Jli/bFF19oVapU0d59992QPtZwNmzYMO2jjz5Sz8+GDRu0yy67TEtKStLS09M917nrrru0xo0ba/Pnz9fWrl2rXXTRRVqfPn08l+fn52sdOnTQBg8erP32229q3yYmJmoTJkzwXGfPnj1abGysNn78eG3btm3a66+/rjkcDm3OnDkhf8zhaObMmdpPP/2k/f7779rOnTu1f/zjH1pkZKTaL4L7IPRWr16tNW3aVOvUqZN2//33e87nvggPlggsevbsqY0bN87ze0FBgdagQQNtypQppm6XFfgGFk6nU6tXr5720ksvec5LSUnRoqOjVXAg5M0of7dmzRrPdWbPnq3ZbDbt8OHD6ve33npLq1GjhpaTk+O5zqOPPqq1bt06RI/s3JOcnKye18WLF3uedznAffPNN57rbN++XV1nxYoV6nf54LTb7dqxY8c813n77be1hIQEz3P/97//XWvfvr3Xfd1www0qsCH/5LU7depU7gMTnD17VmvZsqU2b9487ZJLLvEEFtwX4eOcHwrJzc3FunXrVDreuB6J/L5ixQpTt82K9u7dq9aIMT7f0jtehp/051t+yvCHLFSnk+vLflm1apXnOv3791cr5uqGDRumUv1nzpwJ6WM6V6SmpqqfNWvWVD/ldS9LQRv3RZs2bZCUlOS1Lzp27Oi1lo88z7Ig09atWz3XMd6Gfh2+f4oqKCjAl19+qRZelCER7oPQk6EOGcrwfb64L8JHudYKCScnT55Ub3bfRdDk9x07dpi2XVYlQYXw93zrl8lPGbs0ioiIUAdE43WaNWtW5Db0y2rUqFGpj+Nc43Q61Vhy37590aFDB8/zJIGZBHEl7Qt/+0q/rKTryIdtVlaWqqM5323evFkFEjKGL2P306dPR7t27bBhwwbugxCSoG79+vVYs2ZNkcv4fggf53xgQXS+fEvbsmULli1bZvamnJdat26tggjJGn377bcYO3YsFi9ebPZmnVdkufP7778f8+bNUwXfFL7O+aGQxMREOByOIpW/8nu9evVM2y6r0p/Tkp5v+ZmcnOx1uVRdy0wR43X83YbxPshFVhL+8ccfsXDhQjRq1MhzvjxPMhSYkpJS4r4o7Xku7joyA4Lfzlzkm7DMDujWrZuardO5c2e8+uqr3AchJEMd8rkiszUkAyonCe5ee+019X/JKnBfhAe7Fd7w8mafP3++V9pYfpfUJQWXDF/IG8/4fEuKUGon9OdbfsqbWz4IdAsWLFD7RWox9OvItFYZE9XJNxH5ZshhEBepnZWgQtLu8vz5Dh3J6z4yMtJrX0iNikynM+4LSeMbAz15nuVDUlL5+nWMt6Ffh++f4slrOScnh/sghAYNGqSeR8kc6Sep45Jp7fr/uS/ChGaR6aYyK2HatGlqRsJf//pXNd3UWPlLZau6lqlYcpKXyMsvv6z+v3//fs90U3l+f/jhB23Tpk3ayJEj/U437dKli7Zq1Spt2bJlqorbON1UKrhluulNN92kpu3JPpQpXpxuWuj//u//1LTeRYsWaUePHvWcMjMzvabXyRTUBQsWqOl1vXv3Viff6XVDhw5VU1Zlylzt2rX9Tq975JFHVBX9m2++yel1Bo899piaibN37171epffZYbT3Llz1eXcB+YxzgoR3BfhwRKBhZC5xvKCkn4WMv1U+idQ+SxcuFAFFL6nsWPHeqacPvHEEyowkIBu0KBBan6/0alTp1QgUbVqVTWV69Zbb1UBi5H0wOjXr5+6jYYNG6qAhQr52wdykt4WOgnm7r77bjX9UT4MR40apYIPo3379mkjRoxQfUJkzv5DDz2k5eXlFdnnF154oXr/NG/e3Os+zne33Xab1qRJE/XcyEFIXu96UCG4D8InsOC+CA9cNp2IiIiC5pyvsSAiIqLwwcCCiIiIgoaBBREREQUNAwsiIiIKGgYWREREFDQMLIiIiChoGFgQERFR0DCwICIioqBhYEFERERBw8CCiMrklltuwdVXX232ZhBRmGJgQUREREHDwIKI/Pr222/RsWNHVKlSBbVq1cLgwYPxyCOP4OOPP8YPP/wAm82mTosWLVLXP3jwIK6//npUr14dNWvWxMiRI7Fv374imY6JEyeidu3aaqnqu+66C7m5uSY+SiIKtoig3yIRnfOOHj2K0aNH48UXX8SoUaNw9uxZLF26FDfffDMOHDiAtLQ0fPTRR+q6EkTk5eVh2LBh6N27t7peREQEnn32WQwfPhybNm1CVFSUuu78+fMRExOjghEJOm699VYVtDz33HMmP2IiChYGFkTkN7DIz8/HNddcgyZNmqjzJHshJIORk5ODevXqea7/3//+F06nE1OnTlVZDCGBh2QvJIgYOnSoOk8CjA8//BCxsbFo3749Jk2apLIgzzzzDOx2JlCJrIDvZCIqonPnzhg0aJAKJq677jq8//77OHPmTLHX37hxI/744w/Ex8ejatWq6iSZjOzsbOzevdvrdiWo0EmGIz09XQ2jEJE1MGNBREU4HA7MmzcPy5cvx9y5c/H666/j8ccfx6pVq/xeX4KDbt264bPPPitymdRTENH5g4EFEfklQxp9+/ZVpyeffFINiUyfPl0NZxQUFHhdt2vXrvjqq69Qp04dVZRZUmYjKytLDaeIlStXquxG48aNK/3xEFFocCiEiIqQzMTkyZOxdu1aVaz5/fff48SJE2jbti2aNm2qCjJ37tyJkydPqsLNMWPGIDExUc0EkeLNvXv3qtqK++67D4cOHfLcrswAuf3227Ft2zbMmjULTz31FO655x7WVxBZCDMWRFSEZB2WLFmCV155Rc0AkWzFv//9b4wYMQLdu3dXQYP8lCGQhQsXYsCAAer6jz76qCr4lFkkDRs2VHUaxgyG/N6yZUv0799fFYDKzJOnn37a1MdKRMFl0zRNC/JtEhEVIX0sUlJSMGPGDLM3hYgqEfOPREREFDQMLIiIiChoOBRCREREQcOMBREREQUNAwsiIiIKGgYWREREFDQMLIiIiChoGFgQERFR0DCwICIioqBhYEFERERBw8CCiIiIECz/DyHLVvGav8vdAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3870\n"
     ]
    }
   ],
   "execution_count": 33
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:21.543160Z",
     "start_time": "2025-01-17T12:25:21.538490Z"
    }
   },
   "cell_type": "code",
   "source": "record_dict[\"train\"][-5:]",
   "id": "acc7cd1cd573870",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 0.426907479763031, 'step': 4595},\n",
       " {'loss': 0.398888498544693, 'step': 4596},\n",
       " {'loss': 0.2944188117980957, 'step': 4597},\n",
       " {'loss': 0.3776111602783203, 'step': 4598},\n",
       " {'loss': 0.3692401349544525, 'step': 4599}]"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:25:23.539750Z",
     "start_time": "2025-01-17T12:25:23.534909Z"
    }
   },
   "cell_type": "code",
   "source": "record_dict[\"val\"][-5:]",
   "id": "172382f4d0c2e1a8",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[{'loss': 0.39421743899583817, 'step': 4370},\n",
       " {'loss': 0.3935822220519185, 'step': 4416},\n",
       " {'loss': 0.39329893980175257, 'step': 4462},\n",
       " {'loss': 0.39289587270468473, 'step': 4508},\n",
       " {'loss': 0.3924775132909417, 'step': 4554}]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 17
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "## 测试集",
   "id": "d9f6852bfa6d34fe"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-01-17T12:43:17.489560Z",
     "start_time": "2025-01-17T12:43:17.443650Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model.eval()  # 评估模式\n",
    "loss = evaluate(model, test_loader, loss_fct)\n",
    "print(f\"Test loss: {loss:.4f}\")"
   ],
   "id": "506c5db54876b6ed",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Test loss: 0.3957\n"
     ]
    }
   ],
   "execution_count": 34
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
